package com.example.shortmessage.utils;

import android.content.Context;
import android.content.SharedPreferences;

import androidx.annotation.NonNull;

/**
 * SharedPreferences 简单封装
 * @author 27638
 */
public class SPUtils {

    private static SharedPreferences sp;
    private static final String FILE_NAME = "share_data";

    private static final SPUtils INSTANCE = new SPUtils();
    private SPUtils() {
    }

    @NonNull
    public static SPUtils getInstance(@NonNull Context context){
        sp = context.getSharedPreferences( FILE_NAME, Context.MODE_PRIVATE );
        return INSTANCE;
    }

    /**
     * SP 中写入String
     * @param key 键
     * @param value 值
     */
    public void put(@NonNull String key, @NonNull String value){
        sp.edit().putString(key,value).apply();
    }

    /**
     * SP 中写入int
     * @param key 键
     * @param value 值
     */
    public void put(@NonNull String key, int value){
        sp.edit().putInt(key,value).apply();
    }

    /**
     * SP 中写入float
     * @param key 键
     * @param value 值
     */
    public void put(@NonNull String key, @NonNull float value){
        sp.edit().putFloat(key,value).apply();
    }

    /**
     * SP 中写入Boolean
     * @param key 键
     * @param value 值
     */
    public void put(@NonNull String key, @NonNull Boolean value){
        sp.edit().putBoolean(key,value).apply();
    }

    /**
     * SP 中读取String
     * @param key 键
     * @return 值,不存在返回默认值{""}
     */
    public String getString(@NonNull String key){
        return sp.getString(key,"");
    }

    /**
     * SP 中读取int
     * @param key 键
     * @return 值,不存在返回默认值{-1}
     */
    public int getInt(@NonNull String key){
        return sp.getInt(key,-1);
    }

    /**
     * SP 中读取float
     * @param key 键
     * @param defaultValue 默认值
     * @return 值,不存在返回默认值{@defaultValue}
     */
    public float getFloat(@NonNull String key , float defaultValue){
        return sp.getFloat(key,defaultValue);
    }

    /**
     * SP 中读取float
     * @param key 键
     * @return 值,不存在返回默认值{-1}
     */
    public float getFloat(@NonNull String key){
        return sp.getFloat(key,-1.0f);
    }

    /**
     * SP 中读取int
     * @param key 键
     * @param defaultValue 默认值
     * @return 值,不存在返回默认值{@defaultValue}
     */
    public int getInt(@NonNull String key , int defaultValue){
        return sp.getInt(key,defaultValue);
    }

    /**
     * SP 中读取Boolean
     * @param key 键
     * @return 值,不存在返回默认值{false}
     */
    public Boolean getBoolean(@NonNull String key){
        return sp.getBoolean(key,false);
    }

    /**
     * SP中清除所有数据
     */
    public void clear() {
        sp.edit().clear().apply();
    }

}
